/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sistemperpustakaan.controller;

import java.io.File;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.view.JasperViewer;
import sistemperpustakaan.component.PdfFilter;
import sistemperpustakaan.entity.Anggota;
import sistemperpustakaan.entity.Inventaris;
import sistemperpustakaan.entity.TransaksiDetailView;
import sistemperpustakaan.entity.TransaksiView;
import sistemperpustakaan.entity.ViewInventaris;
import sistemperpustakaan.entity.ViewTransaksi;
import sistemperpustakaan.model.AnggotaModel;
import sistemperpustakaan.model.InventarisModel;
import sistemperpustakaan.model.TransaksiModel;
import sistemperpustakaan.tablemodel.TransaksiDetailTableModel;
import sistemperpustakaan.tablemodel.TransaksiTableModel;
import sistemperpustakaan.utility.DateUtility;
import sistemperpustakaan.utility.FilterUtility;
import sistemperpustakaan.utility.UserUtility;
import sistemperpustakaan.view.transaksi.DialogTransaksiDetail;
import sistemperpustakaan.view.transaksi.FrmTransaksiView;

/**
 *
 * @author EKo
 */
public class TransaksiController {

    FrmTransaksiView frameTransaksi;
    DialogTransaksiDetail transaksiDetail;
    TransaksiModel model;
    TransaksiDetailTableModel detailTableModel;
    DateUtility du = new DateUtility();
    String idUser = UserUtility.idUser;
    String namaUser = UserUtility.name;
    public TransaksiController() {
    }

    public TransaksiController(FrmTransaksiView frameTransaksi, TransaksiModel model) {
        this.frameTransaksi = frameTransaksi;
        this.model = model;
    }

    public FrmTransaksiView getFrmTransaksiView() {
        return frameTransaksi;
    }

    public void setFrameTransaksi(FrmTransaksiView frameTransaksi) {
        this.frameTransaksi = frameTransaksi;
    }

    public DialogTransaksiDetail getTransaksiDetail() {
        return transaksiDetail;
    }

    public void setTransaksiDetail(DialogTransaksiDetail transaksiDetail) {
        this.transaksiDetail = transaksiDetail;
    }

    public TransaksiDetailTableModel getDetailTableModel() {
        return detailTableModel;
    }

    public void setDetailTableModel(TransaksiDetailTableModel detailTableModel) {
        this.detailTableModel = detailTableModel;
    }

    public void findDataTransaksi() {

        int idTransaksi = -1;
        if (!frameTransaksi.getTxtTransaksiId().getText().equals("")) {
            try {
                idTransaksi = Integer.valueOf(frameTransaksi.getTxtTransaksiId().getText());
            } catch (Exception e) {
                JOptionPane.showMessageDialog(frameTransaksi, "ID Transaksi harus diisi dengan angka");
                frameTransaksi.getTxtTransaksiId().setText("");
                return;
            }
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
//        String tanggala = df.format(frameTransaksi.getTxtTanggalAwal().getDate());
        String tanggala = df.format(frameTransaksi.getTxtTanggalAwal().getDate());
        String tanggalb = df.format(frameTransaksi.getTxtTanggalAkhir().getDate());


        frameTransaksi.setTableModel(new TransaksiTableModel());
        frameTransaksi.getTableModel().setlistTransaksi(model.getListTransaksi(
                frameTransaksi.getTxtTransaksiId().getText(),
                tanggala,
                tanggalb,
                frameTransaksi.getTxtNis().getText(),
                frameTransaksi.getTxtNama().getText(),
                frameTransaksi.getTxtJudul().getText(),
                frameTransaksi.getOpt()));
        frameTransaksi.getTblTransaksi().setModel(frameTransaksi.getTableModel());
        frameTransaksi.setTableWidth();
        //frameTransaksi.setOpt(-1);
        int jumlah = frameTransaksi.getTblTransaksi().getRowCount();
        frameTransaksi.getLblJumlah().setText(Integer.toString(jumlah));
        int denda =0;
        for (int i = 0; i < jumlah; i++) {
            int a = Integer.valueOf(frameTransaksi.getTableModel().getValueAt(i, 13).toString());
            denda = denda + a;
        }
        frameTransaksi.getLblDenda().setText("Total Denda Rp. " + Integer.toString(denda) + ",-");
//        getTotalDenda();
    }

    public void getTotalDenda() {
        //total denda
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
        String tanggala = df.format(frameTransaksi.getTxtTanggalAwal().getDate());
        String tanggalb = df.format(frameTransaksi.getTxtTanggalAkhir().getDate());

        if (frameTransaksi.getOpt() == 1) {
            int denda = 0;
            frameTransaksi.getLblDenda().setText("Total Denda Rp. " + Integer.toString(denda) + ",-");
        } else {
            int denda = model.jumlahDenda(tanggala, tanggalb);
            frameTransaksi.getLblDenda().setText("Total Denda Rp. " + Integer.toString(denda) + ",-");

        }
    }

    public void refreshListTransaksi() {
        frameTransaksi.getTxtTransaksiId().setText("");
        frameTransaksi.getTxtJudul().setText("");
        frameTransaksi.getTxtNis().setText("");
        frameTransaksi.getTxtNama().setText("");
        frameTransaksi.getRadioBelumSelesai().setSelected(true);
        frameTransaksi.setOpt(1);
        frameTransaksi.getTxtTanggalAwal().setDate(du.getBeginOfMonthDate());
        frameTransaksi.getTxtTanggalAkhir().setDate(du.getEndOfMonthDate());
        findDataTransaksi();
    }


    public void showGenerateIdTransaksiDetail() {
        TransaksiDetailView td = model.generateIdTransaksiDetail();
        transaksiDetail.getTxtIdTransaksiDetail().setText(td.getId() + "");
        //System.out.println(td.getId());
    }

    public void setSelectedAnggota(int idAnggota) {
//        System.out.println(idBuku);
        Anggota anggota = new AnggotaModel().getAnggota(idAnggota);
        transaksiDetail.getTxtIdAnggota().setText(Integer.toString(anggota.getId()));
        transaksiDetail.getTxtNis().setText(anggota.getNis_nik());
        transaksiDetail.getTxtNama().setText(anggota.getNama());

    }

    public void setSelectedInventaris(String idInventaris) {
//        System.out.println(idBuku);
//        Anggota anggota = new AnggotaModel().getAnggota(idAnggota);
//        Inventaris vi = new InventarisModel().getInventaris(idInventaris);
//        transaksiDetail.getTxtIdInventaris().setText(vi.getId());
        ViewInventaris viewI = new InventarisModel().getViewInventaris(idInventaris);
        transaksiDetail.getTxtIdInventaris().setText(viewI.getInventaris_id());
        transaksiDetail.getTxtJudul().setText(viewI.getJudul());

    }

    public void addPinjamBuku() {
//        int pinjamSementara = model.cekTransaksiSementara(transaksiDetail.getTxtIdInventaris().getText());
        int pinjamSementara = 0;
        if (transaksiDetail.getTxtNis().getText().equals("")) {
            JOptionPane.showMessageDialog(transaksiDetail, "Data Peminjam Belum Diisi");
            return;
        } else if (transaksiDetail.getTxtIdInventaris().getText().equals("")) {
            JOptionPane.showMessageDialog(transaksiDetail, "No Inventaris masih kosong");
            return;
        } else if (transaksiDetail.getTxtIdInventaris().getText().equals("")) {
            JOptionPane.showMessageDialog(transaksiDetail, "Buku sudah ada di daftar pinjam");
            return;
        } else if (pinjamSementara > 0) {
            JOptionPane.showMessageDialog(transaksiDetail, "Buku sudah ada di daftar pinjam");
            return;
        }

        int countInventaris = model.countInventarisPeminjaman(transaksiDetail.getTxtIdInventaris().getText());
        int jumlahPinjam = model.countPeminjamanNotCompleteByAnggota(Integer.valueOf(transaksiDetail.getTxtIdAnggota().getText()));
        int jumlahInventaris = model.cekDataInventaris(transaksiDetail.getTxtIdInventaris().getText());
        int typeAnggota = model.cekStatusAnggota(Integer.valueOf(transaksiDetail.getTxtIdAnggota().getText()));



//        String coba = transaksiDetail.getTblTransaksiDetail().getValueAt(1, 2).toString();
//        System.out.println(coba);

//        int r = transaksiDetail.getTblTransaksiDetail().getSelectedRow();
        String idInventaris = transaksiDetail.getTxtIdInventaris().getText();
//        String idInventaris2 = transaksiDetail.getTblTransaksiDetail().getValueAt(r, 2).toString();
//        System.out.println(idInventaris2);
        //boolean a = true;
        if (typeAnggota == 1) {
            if (jumlahPinjam >= 3) {
                JOptionPane.showMessageDialog(transaksiDetail, "Anggota dengan nama " + transaksiDetail.getTxtNama().getText()
                        + "\n Masih punya 3 peminjaman yang belum dikembalikan \n"
                        + "Peminjaman baru tidak diperkenankan");
            } else if (countInventaris > 0) {
                JOptionPane.showMessageDialog(transaksiDetail, "Buku ini sudah dipinjam");
            } else if (jumlahInventaris < 1) {
                JOptionPane.showMessageDialog(transaksiDetail, "Buku ini tidak ada, \n silakan cek data ID Inventaris");
            } else if (transaksiDetail.getTblTransaksiDetail().getRowCount() >= (3 - jumlahPinjam)) {
                JOptionPane.showMessageDialog(transaksiDetail, "Peminjaman dengan nomor ini sudah melampaui jumlah maksimum, \n Segera simpan transaksi peminjaman atau hapus buku yang lain");
            } else {
//                model.insertPinjamSementara(idInventaris);
                TransaksiDetailView td = new TransaksiDetailView();

                td.setId(0);
                td.setIdTransaksi(0);
                //td.setTerlambat(990);
                //td.setDenda(1000);
                td.setIdInventaris(transaksiDetail.getTxtIdInventaris().getText());
                td.setJudul(transaksiDetail.getTxtJudul().getText());

                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                Date date = new Date();
                String tanggal = df.format(transaksiDetail.getTxtTanggalPinjam().getDate());

                td.setTanggalPinjam(transaksiDetail.getTxtTanggalPinjam().getDate());
                //System.out.println(transaksiDetail.getTxtIdTransaksiDetail().getText());
                transaksiDetail.getTableModel().getListDetailTransaksi().add(td);
                transaksiDetail.getTableModel().fireTableDataChanged();
                clearDataDetail();
            }
        } else if (typeAnggota == 2) {
            if (countInventaris > 0) {
                JOptionPane.showMessageDialog(transaksiDetail, "Buku ini sudah dipinjam");
            } else if (jumlahInventaris < 1) {
                JOptionPane.showMessageDialog(transaksiDetail, "Buku ini tidak ada, \n silakan cek data ID Inventaris");
            } else {
//                model.insertPinjamSementara(idInventaris);
                TransaksiDetailView td = new TransaksiDetailView();

                td.setId(0);
                td.setIdTransaksi(Integer.valueOf(transaksiDetail.getTxtIdTransaksi().getText()));
                //td.setTerlambat(990);
                //td.setDenda(1000);
                td.setIdInventaris(transaksiDetail.getTxtIdInventaris().getText());
                td.setJudul(model.getJudul(transaksiDetail.getTxtIdInventaris().getText()));

                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                Date date = new Date();
                String tanggal = df.format(transaksiDetail.getTxtTanggalPinjam().getDate());

                td.setTanggalPinjam(transaksiDetail.getTxtTanggalPinjam().getDate());
                //System.out.println(transaksiDetail.getTxtIdTransaksiDetail().getText());
                transaksiDetail.getTableModel().getListDetailTransaksi().add(td);
                transaksiDetail.getTableModel().fireTableDataChanged();
                clearDataDetail();
            }
        }


    }

    public void removeBuku() {
        int r = transaksiDetail.getTblTransaksiDetail().getSelectedRow();
        if (r > -1) {
            if (transaksiDetail.getTableModel().getListDetailTransaksi().get(r).getId() > 0) {
                JOptionPane.showMessageDialog(transaksiDetail, "Buku ini telah ada dalam list peminjaman dan tidak bisa di remove");
            } else {
                transaksiDetail.getTableModel().getListDetailTransaksi().remove(r);
                model.deletePinjamSementara(transaksiDetail.getTableModel().getListDetailTransaksi().get(r).getIdInventaris());
                transaksiDetail.getTableModel().fireTableDataChanged();
            }
        }
    }

    public void clearDataDetail() {
        //transaksiDetail.getTxtIdAnggota().setText("");
        //transaksiDetail.getTxtNis().setText("");
        //transaksiDetail.getTxtNama().setText("");
        transaksiDetail.getTxtIdInventaris().setText("");
        transaksiDetail.getTxtJudul().setText("");
        transaksiDetail.getTxtTanggalKembali().setDate(null);
        transaksiDetail.getTxtTerlambat().setText("");
        transaksiDetail.getTxtDenda().setText("");

    }

    public void showSelectedData(int r) {
        transaksiDetail.getTxtIdTransaksiDetail().setText(transaksiDetail.getTblTransaksiDetail().getValueAt(r, 0).toString());
        transaksiDetail.getTxtIdInventaris().setText(transaksiDetail.getTblTransaksiDetail().getValueAt(r, 2).toString());
        transaksiDetail.getTxtJudul().setText(transaksiDetail.getTblTransaksiDetail().getValueAt(r, 3).toString());
        transaksiDetail.getTxtTanggalPinjam().setDate((Date) transaksiDetail.getTblTransaksiDetail().getValueAt(r, 4));
        transaksiDetail.getTxtTanggalKembali().setDate((Date) transaksiDetail.getTblTransaksiDetail().getValueAt(r, 5));
        transaksiDetail.getTxtTerlambat().setText(transaksiDetail.getTblTransaksiDetail().getValueAt(r, 6).toString());
        transaksiDetail.getTxtDenda().setText(transaksiDetail.getTblTransaksiDetail().getValueAt(r, 7).toString());
    }

    public void saveNewTransaksi() {
        int countInventaris = model.countInventarisPeminjaman(transaksiDetail.getTxtIdInventaris().getText());
        int jumlahPinjam = model.countPeminjamanNotCompleteByAnggota(Integer.valueOf(transaksiDetail.getTxtIdAnggota().getText()));
        int jumlahInventaris = model.cekDataInventaris(transaksiDetail.getTxtIdInventaris().getText());
        int typeAnggota = model.cekStatusAnggota(Integer.valueOf(transaksiDetail.getTxtIdAnggota().getText()));

        if (typeAnggota == 1 && jumlahPinjam >= 3) {
            JOptionPane.showMessageDialog(transaksiDetail, "Anggota dengan nama " + transaksiDetail.getTxtNama().getText()
                    + "\n Masih punya 3 peminjaman yang belum dikembalikan \n"
                    + "Peminjaman baru tidak diperkenankan");
        } else if (typeAnggota == 1 && transaksiDetail.getTblTransaksiDetail().getRowCount() >= (3 - jumlahPinjam)) {
            JOptionPane.showMessageDialog(transaksiDetail, "Peminjaman dengan nomor ini sudah melampaui jumlah maksimum, \n Segera simpan transaksi peminjaman atau hapus buku yang lain");
        } else if (transaksiDetail.getTxtIdAnggota().getText().equals("")) {
            JOptionPane.showMessageDialog(transaksiDetail, "Data Peminjam masih kosong");
        } else if (transaksiDetail.getTblTransaksiDetail().getRowCount() == 0) {
            JOptionPane.showMessageDialog(transaksiDetail, "List buku yang akan dipinjam masih kosong");
        } else {
            int id = Integer.valueOf(transaksiDetail.getTxtIdTransaksi().getText());
            int idAnggota = Integer.valueOf(transaksiDetail.getTxtIdAnggota().getText());
            String userId = frameTransaksi.getFrameMain().getIdUser();
            List<TransaksiDetailView> list = transaksiDetail.getTableModel().getListDetailTransaksi();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date date = new Date();
            String tanggal = df.format(transaksiDetail.getTxtTanggalPinjam().getDate());

            //System.out.println(tanggal);
            if (model.insertPinjam(id, idAnggota, idUser, tanggal, list)) {
//                model.deleteAllPinjamSementara();
                JOptionPane.showMessageDialog(transaksiDetail, "Data Peminjaman sukses disimpan");
                transaksiDetail.dispose();
                frameTransaksi.setOpt(1);
                frameTransaksi.getRadioBelumSelesai().setSelected(true);
                findDataTransaksi();
            } else {
                JOptionPane.showMessageDialog(transaksiDetail, "Data Peminjaman gagal disimpan");
            }
        }
    }

    public void saveUpdateTransaksi() {
        if (transaksiDetail.getTxtIdAnggota().getText().equals("")) {
            JOptionPane.showMessageDialog(transaksiDetail, "Data Peminjam masih kosong");
        } else if (transaksiDetail.getTblTransaksiDetail().getRowCount() == 0) {
            JOptionPane.showMessageDialog(transaksiDetail, "List buku yang akan dipinjam masih kosong");
        } else {
            int noPinjam = Integer.valueOf(transaksiDetail.getTxtIdTransaksi().getText());
            int idAnggota = Integer.valueOf(transaksiDetail.getTxtIdAnggota().getText());
            String userId = frameTransaksi.getFrameMain().getIdUser();
            List<TransaksiDetailView> list = transaksiDetail.getTableModel().getListDetailTransaksi();

            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date date = new Date();
            String tanggalKembali = df.format(transaksiDetail.getTxtTanggalKembali().getDate());
            transaksiDetail.getTxtTanggalKembali().setDate(date);
            //System.out.println(tanggalKembali);

            if (model.updatePinjam(noPinjam, idAnggota, userId, tanggalKembali, list)) {
                model.deleteAllPinjamSementara();
                JOptionPane.showMessageDialog(transaksiDetail, "Data Peminjaman sukses diupdate");
                transaksiDetail.dispose();
                frameTransaksi.setOpt(1);

                frameTransaksi.getRadioBelumSelesai().setSelected(true);
                findDataTransaksi();
            } else {
                JOptionPane.showMessageDialog(transaksiDetail, "Data Peminjaman gagal diupdate");
            }
        }
    }

    public void showDataTransaksi(int id) {
        TransaksiView vp = model.getTransaksi(id);
        transaksiDetail.getTxtIdTransaksi().setText(vp.getNoTransaksi() + "");
        transaksiDetail.getTxtIdAnggota().setText(vp.getIdAnggota() + "");
        transaksiDetail.getTxtNis().setText(vp.getNim());
        transaksiDetail.getTxtNama().setText(vp.getNama());
        transaksiDetail.getTxtUser().setText(vp.getUser()+"");
        transaksiDetail.getTxtPetugas().setText(vp.getNamaUser());
    }

    public void findDataTransaksiDetail(int id) {
        transaksiDetail.setTableModel(new TransaksiDetailTableModel(model.getListDetailTransaksi(id)));
        transaksiDetail.getTblTransaksiDetail().setModel(transaksiDetail.getTableModel());
    }

    public void returnBuku() {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
//        String tanggala = df.format(frameTransaksi.getTxtTanggalAwal().getDate());
        String tgla = df.format(transaksiDetail.getTxtTanggalPinjam().getDate());
        String tglb = df.format(date);


        String tanggalpeminjaman = null, tanggalpengembalian = null;
        int tglM, blnM, thnM, tglK;
        Date tglpinjam;
        Date tglhrskmbli;
        Date tglkmbli;
        String tanggalHrsKembali;
        String tanggalKembali;
        int iBulan;
        String Sbulan;
        String Kbulan;
        int inBulan;

        int terlambat;
        double dendaPerhari = model.ambilDendaBuku();
        int typeAnggota = model.cekStatusAnggota(Integer.valueOf(transaksiDetail.getTxtIdAnggota().getText()));
        int jumlahLibur = model.cekHariLibur(tgla, tglb);
        int r = transaksiDetail.getTblTransaksiDetail().getSelectedRow();
//        SimpleDateFormat df = new SimpleDateFormat("yyyy-MMMM-dd");
//        Date date = new Date();
        transaksiDetail.getTxtTanggalKembali().setDate(date);
        if (r > -1) {
            if (transaksiDetail.getTableModel().getListDetailTransaksi().get(r).getId() <= 0) {
                JOptionPane.showMessageDialog(transaksiDetail, "Buku ini belum ada dalam list peminjaman dan tidak bisa di lakukan proses return");
            } else if (transaksiDetail.getTableModel().getListDetailTransaksi().get(r).getTanggalKembali() != null) {
                JOptionPane.showMessageDialog(transaksiDetail, "Buku ini sudah dikembalikan dan tidak bisa di lakukan proses return ulang");
            } else {

                SimpleDateFormat Format = new SimpleDateFormat("yyyy-M-dd");
                String date1 = Format.format(transaksiDetail.getTxtTanggalPinjam().getDate());
                String date2 = Format.format(transaksiDetail.getTxtTanggalKembali().getDate());
                terlambat = (du.getDiffrentDate(date1, date2)) - 7 - jumlahLibur;
                transaksiDetail.getTableModel().getListDetailTransaksi().get(r).setTanggalKembali(date);

                transaksiDetail.getTxtTanggalKembali().setDate(date);
                if (terlambat > 0 && typeAnggota == 1) {

                    transaksiDetail.getTableModel().getListDetailTransaksi().get(r).setTerlambat(terlambat);
                    transaksiDetail.getTableModel().getListDetailTransaksi().get(r).setDenda((int) (dendaPerhari * terlambat));
                } else {
                    transaksiDetail.getTableModel().getListDetailTransaksi().get(r).setTerlambat(0);
                    transaksiDetail.getTableModel().getListDetailTransaksi().get(r).setDenda(0);
                }
                transaksiDetail.getTableModel().fireTableDataChanged();
                //Date date = new Date();
                transaksiDetail.getTxtTanggalKembali().setDate(date);

            }
        }
    }

    public void report(int opt) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
//        String tanggala = df.format(frameTransaksi.getTxtTanggalAwal().getDate());
        String tanggala = df.format(frameTransaksi.getTxtTanggalAwal().getDate());
        String tanggalb = df.format(frameTransaksi.getTxtTanggalAkhir().getDate());
        int denda;
        if (frameTransaksi.getOpt() == 1) {
            denda = 0;
//            frameTransaksi.getLblDenda().setText("Total Denda Rp. " + Integer.toString(denda) + ",-");
        } else {
            denda = model.jumlahDenda(tanggala, tanggalb);
//            frameTransaksi.getLblDenda().setText("Total Denda Rp. " + Integer.toString(denda) + ",-");

        }

//        File report_file = new File("report/BukuReport.jasper");
        InputStream stream = getClass().getResourceAsStream("report/TransaksiReport.jasper");
        Map<String, Object> map = new HashMap<String, Object>();

        map.put("noTransaksi", frameTransaksi.cekNoTransaksi());
        map.put("tanggalAwal", frameTransaksi.cekTanggalAwal());
        map.put("tanggalAkhir", frameTransaksi.cekTanggalAkhir());
        map.put("nis", frameTransaksi.cekNis());
        map.put("nama", frameTransaksi.cekNama());
        map.put("judul", frameTransaksi.cekJudul());
        map.put("opt", frameTransaksi.cekOpt());
        map.put("totalDenda", denda);
        map.put("logo", "C:\\logo.jpg");
        System.out.println(frameTransaksi.cekNama() + frameTransaksi.cekNis());

        try {
//            System.out.println("ngisor catch");
//            JasperReport jasperReport = (JasperReport) JRLoader.loadObject(report_file.getPath());
            JasperPrint jasperPrint = JasperFillManager.fillReport(stream, map, model.getConnection());
            switch (opt) {

                case 0:
                    JasperViewer.viewReport(jasperPrint, false);
//                    System.out.println("mlebu opt");
                    break;
                case 1:
                    JasperPrintManager.printReport(jasperPrint, true);
                    break;
//                case 2:
//                            JFileChooser fc = new JFileChooser();
//                            fc.setFileFilter(new PdfFilter());
//                            int returnValue = fc.showSaveDialog(anggotaView);
//                            if(returnValue == JFileChooser.APPROVE_OPTION){
//                                File f = fc.getSelectedFile();
//                                String path = f.getPath();
//                                String ext = FilterUtility.getExtension(f);
//                                if(ext != "pdf" ) path += ".pdf";
//                                System.out.println("sukses");
////                                JasperPrintManager.printReport(, true);
//                                JasperPrintManager.printReportToPdfFile(jasperPrint, path);
//                                JOptionPane.showMessageDialog(anggotaView, "Downlaod data berhasil \n lokasi file anda: "+path);
//                            }
//                            break;
            }

        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak!" + "\n" + ex.getMessage(), "Cetak Data", JOptionPane.ERROR_MESSAGE);
        } catch (Exception e) {
        }
    }

    public void deleteAllPinjamSementara() {
        model.deleteAllPinjamSementara();
    }
}
